package assets {
	import flash.net.URLRequest;
	
	/**
	 * @author Charlie MacIsaac
	 */
	public class Asset {
		// PROPERTIES =============================================================================
		private var _urlRequest : URLRequest;
		private var _content : Object;
		private var _isLoaded : Boolean;
		private var _loader : AssetLoader;
		
		// GETTERS + SETTERS ======================================================================
		internal function get url() : URLRequest {
			return _urlRequest;
		}
		
		internal function get isData() : Boolean {
			var type : String = _urlRequest.url.substr(_urlRequest.url.length - 4, 4);
			
			switch (type) {
				case ".swf" : 
				case ".png" : 
				case ".jpg" : 
				case ".gif" : 
					return false;
				default :
					return true;
			}
		}
		
		public function get isLoaded() : Boolean {
			return _isLoaded;
		}
		
		public function get content() : Object {
			return _content;
		}
		
		internal function set data(value : Object) : void {
			if (!_isLoaded) {
				_content = value;
			}
			else {
				throw new Error("[Asset.data] |ERROR| Asset already loaded.");
			}
			_isLoaded = true;
		}
		
		internal function set loader(value : AssetLoader) : void {
			_loader = value;
		}
		
		// CONSTRUCTOR ============================================================================
		public function Asset(url : String) {
			_urlRequest = new URLRequest(url);
		}
		
		// PUBLIC =================================================================================
		// PRIVATE ================================================================================
		// LISTENERS ==============================================================================
	}
}